package cn.finyzq.ss.games.service;

import cn.finyzq.ss.games.vo.ResultBean;
import cn.finyzq.ss.games.vo.Room;
import cn.finyzq.ss.games.vo.User;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.socket.WebSocketSession;

/**
 * Create Time: 2018年08月05日 13:03
 *
 * @author fin
 */
public interface RoomService {


    /**
     * 开房间，如果该用户在另外一个房间，则返回失败并返回所在的房间对象
     * @param user 申请开房用户
     * @param roomType 房间游戏类型
     * @return 开房结果
     */
    ResultBean<Room> openRoom(User user, int roomType);


    /**
     * 开房间，如果该用户在另外一个房间，则返回失败并返回所在的房间对象
     * @param user 申请开房用户
     * @param roomType 房间游戏类型
     * @param force 强开 如果存在房间则退出房间并创建新房间 默认false
     * @return 开房结果
     *
     */
    ResultBean<Room> openRoom(User user, int roomType, boolean force);

    /**
     * 寻找用户是否存在房间
     * @param user 用户信息
     * @return
     */
    ResultBean findUserRoom(User user);

    /**
     * 寻找房间
     * @param roomNo 房间号
     * @return 房间信息
     */
    ResultBean<Room> findRoom(String roomNo);

    /**
     * 处理websocket消息
     * @param message 消息体
     * @param session 来源
     */
    void excuteWebSocketMessage(JSONObject message, WebSocketSession session);

    /**
     * 添加用户ws信息
     * @param userId
     * @param session
     */
    void addUserWsSession(Integer userId, WebSocketSession session);
}
